#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM_PAL 20

int numPalim = 0, primo = 0;

int crivo(int valor){

	int i, j, *vet;
	vet = (int *)malloc((valor + 1)*sizeof(int));

	for(vet[1] = 0, i = 2; i <= valor; i++)
		vet[i] = 1;

	for(i = 2; i <= valor / 2; i++)
		for(j = 2; j <= valor / i; j++)
			vet[i*j] = 0;

	if(vet[valor] == 1)
		return 1;

	return 0;


}

int transformaTextos(char *letra){

	if(*letra >= 65 && *letra <= 90){
		*letra = *letra + 32;
		return 1;
		}
	else
	if(*letra >= 97 && *letra <= 122)
		return 1;
	else
		return 0;	
}

int palim(char *palavra){
	
	 int j = strlen(palavra);
	 if(j <= 1)
		return 0;
		
	 int i, asc = 0;
	 int flagi, flagj;
	 flagi = 0;
	 flagj = 0;
	for(i = 0; i <= j; i++){
		j--;
		flagi = transformaTextos(&palavra[i]);
		flagj = transformaTextos(&palavra[j]);

		if(flagi && flagj){
			if(palavra[i] != palavra[j])
				return 0;
			else 
				asc += 2*palavra[i];	
		}
		else{
			return 0;
		}
	}
	asc -= palavra[j];
	if(flagi && flagj){
		if(crivo(asc))
			primo++;
		numPalim++;
		return 1;
	}

	return 0;
			
}

int main(int argc, char **argv){

	FILE* arq;
	char *palavra;

	arq = fopen("wikipedia.txt", "r");
	palavra = (char *)malloc(TAM_PAL*sizeof(char));

	while(!feof(arq)){
		fscanf(arq, "%s", palavra);	
		palim(palavra);
	}
	
	printf("Numero de palindromos: %d\n", numPalim);
	printf("Numero de primos: %d\n", primo);
	
	fclose(arq);

return 0;
}

